1
แนวคิดเชิงฟังก์ชัน: การเปลี่ยนรูปแทนการแก้ไข
AI019Lesson 2
00:00

แนวทางเชิงฟังก์ชันเปลี่ยนแบบจำลองทางความคิดของนักพัฒนาจาก "การอัปเดตกล่องที่มีสถานะ" เป็น การประยุกต์ใช้การแปลงทางคณิตศาสตร์ กับค่าที่ไม่สามารถเปลี่ยนแปลงได้ ในอีลิกซ์ ข้อมูลจะไม่มีวันถูกเปลี่ยนแปลง มันเพียงแต่ถือกำเนิดใหม่ในรูปแบบที่แตกต่างออกไป

1. การอ้างอิงเชิงคณิตศาสตร์

เมื่อคุณเขียน $x = a + 1$ คุณไม่ได้กำลังกำหนดผลลัพธ์ให้กับตัวแปร แต่คุณแค่ กล่าวอ้าง ว่าสมการ $x$ และ $a + 1$ มีค่าเท่ากัน ซึ่งสะท้อนตรรกะเชิงพีชคณิต ที่ $x$ แสดงถึงค่าคงที่ในบริบทเฉพาะ

2. ความไม่สามารถเปลี่ยนแปลงเป็นสิ่งรับประกัน

ในอีลิกซ์ ค่าทั้งหมดไม่สามารถเปลี่ยนแปลงได้. ข้อมูลไม่สามารถเปลี่ยนแปลงได้อีกหลังจากสร้างแล้ว ซึ่งช่วยกำจัด "ผลข้างเคียง" ที่ฟังก์ชันอาจเปลี่ยนแปลงตัวแปรระดับโลกหรือวัตถุที่ส่งผ่านมาโดยไม่ตั้งใจ ทำให้โค้ดมีความคาดเดาได้และปลอดภัยในการใช้งานพร้อมกัน

ก่อน (ข้อมูลนำเข้า)"elixir"String.capitalizeหลัง (ผลลัพธ์)"Elixir"ข้อมูลต้นฉบับยังคงเหมือนเดิม

3. การเปลี่ยนรูป แทน การแก้ไข

เราไม่เคยแก้ไขข้อมูลในที่เดิม อีลิกซ์ไม่มีคำสั่งกำหนดค่า แต่กลับพยายาม จับคู่ค่ากับรูปแบบ. เพื่อ "เปลี่ยน" ค่า เราส่งข้อมูลต้นฉบับผ่านฟังก์ชันเพื่อสร้างเวอร์ชันใหม่ทั้งหมด

iex> name = "elixir"
"elixir"
iex> cap_name = String.capitalize name
"Elixir"
iex> name
"elixir" (ยังคงบริสุทธิ์อยู่!)
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>